1. Field of Invention
This invention relates generally to high-speed printers and more particularly to dot generation circuitry in a dot matrix printer.
2. Description of Prior Art
Dot matrix impact printers employing a laterally shuttling print bar convert data provided by a host computer or word processor to characters or graphics formed from rows of dots printed on paper. The data is input to the printer through an input/output system, filtered for control and other non-printable characters and formatted by a microprocessor, and then converted to dots and input to the print mechanism in the correct order by a subsystem called the Dot Generation Logic. The purpose of the Dot Generation Logic is to map the American Standard Code for Information Interchange (ASCII) coded (or otherwise coded) data bytes into their appropriate pictorial dot image and to format this data to drive the print mechanism. Dot Generation Logic in prior art line printers may generally comprise a buffer memory of all active characters to be printed on the print line, complex state machine logic, a dot image buffer, arithmetic capability, programmable dot extraction logic capability, and the character set dot image ROMs.
Most contemporary dot matrix impact line printers have 132, 66, 44, 33, or 17 print hammers evenly spaced along the shuttling print bar at intervals of 0.1", 0.2", 0.3", 0.4", or 0.8" respectively. Conversion of ASCII coded information into the proper dot images is not difficult itself, but formatting and sequencing the dots to the print hammers can be troublesome. Although a dot matrix line printer appears to print a single dot row at a time, the hammer driving circuits for a laterally shuttling print bar can not collectively accept simple raster scan dot data, as a cathode ray tube does. As the print bar on, say a 132-hammer line printer moves from one extreme position to the other, each hammer passes across its exclusive 0.1" print area. While each hammer itself prints as a 0.1" mini-raster scan, the print bar, when viewed as a unit, appears as a configuration of 132 disjointed raster scans. Dot image data must somehow be sequenced to the hammers to compensate for the physical print bar configuration. If this print bar covers 13.2" of paper (an industry standard) at a dot density of 100 dots per inch, the first 132 dots printed simultaneously as the print bar passes across the first printable position on the paper are the dots number 0, 10, 20, . . . 1310. The next 132 dots to be simultaneously printed will be 1, 11, 21, . . . 1311, and so on to the final 132 dots of 9, 19, 29, . . . 1319. Clearly, routing and sequencing considerations are an important task of the dot generation logic.
Spacing between print hammers on simple dot matrix line printers is an exact or easily obtainable multiple of the printable horizontal character densities (i.e. character pitches). Dot generation logic to print a row of 10-pitch characters (10 characters per inch or one character per 0.1") is quite simple for a printer with print hammer spacing an integer multiple of 0.1" when the width of each character cell fits exactly within the reach of a single print hammer. Such dot generation logic could also print, for example, 15-pitch characters if the print hammers were spaced either 0.2", 0.4" or 0.8"; or 131/3- or 162/3-pitch characters if its hammers were spaced 0.3" apart. The ASCII to dot conversion and dot sequencing algorithm is simple since all hammers will print the same dot column of any active characters at the same time. Each printable character is mapped through its dot image ROM which usually yields eight bits. Then, based upon the character column being printed, one of the bits is extracted and passed toward the hammer driver logic. Each successive printable character is similarly mapped and a single bit extracted and passed toward the hammer driver logic.
Enhancements to the dot generation are required to print character text at a density that does not perfectly fit the explicit hammer spacing. Dots from characters to be printed simultaneously can originate from different columns within the character cells. Modulo arithmetic capability is often added to supplement the general accessing logic required for the simplest line printer to allow for processing and simultaneously printing, for example, the first column of the first character, the third column of the second character, the fifth column of the third character, etc.
More complex logic is required if character pitches are changed within a print row. This capability is utilized in advanced data reporting and formatting and to print proportionally spaced text. Because there is no consistent pattern to the column addressing for the characters on the print row, either a dedicated microprocessor or more substantial arithmetic logic is required to keep track of changing character widths and dot positions across the paper, to queue up dots, and to send them in the proper sequence to the print hammers.